#pragma once
#include <BasisObj.h>
#include <ManagerBase.h>

namespace grflib
{
	namespace engine
	{
		namespace core
		{
			//////////////////////////////////////////////////////
			// Renderer
			//////////////////////////////////////////////////////
			class IRenderer
			{
			public:
				IRenderer(void) {}
				virtual ~IRenderer(void) {}

				virtual void InitScene(void) = 0;
				virtual HRESULT OnCreateDevice(ID3D10Device *pd3dDevice, const DXGI_SURFACE_DESC* pBufferSurfaceDesc) = 0;
				virtual HRESULT OnResizeSwapChain(ID3D10Device *pd3dDevice, IDXGISwapChain *pSwapChain,
					const DXGI_SURFACE_DESC *pBufferSurfaceDesc) = 0;
				virtual void OnRender(ID3D10Device *pd3dDevice, double fTime, float fElapsedTimes) = 0;
				virtual void OnDestroy(void) = 0;
				virtual void OnFrameMove(double fTime, float fElapsedTime) = 0;
				virtual void OnReleaseSwapChain(void) = 0;
				virtual bool HandleMessages(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) = 0;

			protected:

			};
		} //namespace core
	} //namespace engine
} //namespace grflib